package com.fanghaoran.view.manager;

import com.fanghaoran.view.LoginFrame;


import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import java.io.File;
import java.io.IOException;

/**
 * @Author: win11
 * @Date: 2023/03/27/17:19
 * @Description: 管理者主页面
 */
public class MainFrame extends JFrame{
    public MainFrame() throws Exception {
        //最外层界面frame的设置
        initFrame();
        //界面中的视图,控件等的设置
        initView();


        //设置可见
        this.setVisible(true);

    }

    private void initFrame() throws IOException {
        //设置宽高
        this.setSize(1000, 600);
        //设置居中
        this.setLocationRelativeTo(null);
        //设置标题
        this.setTitle("扇贝单词");
        //设置标题旁边的logo图标
        this.setIconImage(ImageIO.read(new File("src//image//logo.jpg")));
        //设置置顶
        this.setAlwaysOnTop(true);
        //设置关闭模式
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    private void initView() throws Exception {
        //菜单栏
        JMenuBar jmb = new JMenuBar();
        //菜单选项
        JMenu set = new JMenu("设置");
        //菜单选项下的条目
        JMenuItem switchAccount = new JMenuItem("切换账号");
        //条目添加到选项
        set.add(switchAccount);
        //选项添加到菜单栏
        jmb.add(set);
        //菜单栏添加到frame中
        this.setJMenuBar(jmb);
        //给菜单部分设置点击事件
        //切换账号
        switchAccount.addActionListener((e) -> {
                    //关闭当前页面并跳转到登录页面
                    this.dispose();
                    try {
                        new LoginFrame();
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
        );

        //主体内容
        //设置分隔面板
        JSplitPane sp = new JSplitPane();
        //设置支持连续布局
        sp.setContinuousLayout(true);
        //设置分割线位置
        sp.setDividerLocation(120);
        //设置分割线大小
        sp.setDividerSize(5);

        //设置左边内容(树)
        //设置根节点
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("总览");
        //设置子节点
        DefaultMutableTreeNode userInfo = new DefaultMutableTreeNode("查看用户信息");
        DefaultMutableTreeNode bookInfo = new DefaultMutableTreeNode("查看软件单词书");
        DefaultMutableTreeNode notice = new DefaultMutableTreeNode("设置公告");
        //给根节点添加子节点
        root.add(userInfo);
        root.add(bookInfo);
        root.add(notice);
        //设置树对象并把根节点放入
        JTree tree = new JTree(root);
        //设置树对象默认选择"查看用户信息"
        tree.setSelectionRow(1);
        sp.setRightComponent(new UserInfoPanel());
        sp.setDividerLocation(150);
        //给tree绑定监听,当条目选择变化时,执行方法
        tree.addTreeSelectionListener(e -> {
                    Object lastPathComponent = e.getNewLeadSelectionPath().getLastPathComponent();
                    //点击"查看用户信息"的操作
                    if (userInfo.equals(lastPathComponent)) {
                        try {
                            sp.setRightComponent(new UserInfoPanel());
                        } catch (Exception ex) {
                            ex.printStackTrace();
                        }
                        sp.setDividerLocation(150);
                    }
                    //点击"查看单词书"的操作
                    else if (bookInfo.equals(lastPathComponent)) {
                        try {
                            sp.setRightComponent(new BookPanel());
                        } catch (Exception ex) {
                            ex.printStackTrace();
                        }
                    }
                    //点击"设置公告"的操作
                    else if (notice.equals(lastPathComponent)) {
                        try {
                            sp.setRightComponent(new NoticePanel());
                        } catch (Exception ex) {
                            ex.printStackTrace();
                        }
                        sp.setDividerLocation(150);
                    }
                }
        );

        //把树放到分隔面板的左边
        sp.setLeftComponent(tree);
        //添加到frame
        this.add(sp);
    }
}
